package org.nabc.core.builder;

import org.nabc.support.TemplateGenerateTaskValue;

import java.util.ArrayList;
import java.util.List;

import static org.nabc.constant.ModeConstant.*;
import static org.nabc.constant.TypeConstant.*;

public class TemplateGenerateTaskBuilder {
    List<TemplateGenerateTaskValue> list = new ArrayList<>();

    public TemplateGenerateTaskBuilder defaultController() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(CONTROLLER)
                .mode(DEFAULT)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisService() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(SERVICE)
                .mode(MYBATIS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisServiceImpl() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(SERVICE_IMPL)
                .mode(MYBATIS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisMapper() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(MAPPER)
                .mode(MYBATIS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisMapperXml() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(MAPPER_XML)
                .mode(MYBATIS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisEntity() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(ENTITY)
                .mode(MYBATIS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusController() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(CONTROLLER)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusService() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(SERVICE)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusServiceImpl() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(SERVICE_IMPL)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusMapper() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(MAPPER)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusMapperXml() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(MAPPER_XML)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder mybatisPlusEntity() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(ENTITY)
                .mode(MYBATIS_PLUS)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder vueApi() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(API)
                .mode(VUE)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder vueView() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(VIEW)
                .mode(VUE)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder goController() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(CONTROLLER)
                .mode(GO)
                .build());

        return this;
    }

    public TemplateGenerateTaskBuilder goService() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(SERVICE)
                .mode(GO)
                .build());

        return this;
    }


    public TemplateGenerateTaskBuilder goMapper() {
        list.add(TemplateGenerateTaskValue
                .builder()
                .type(MAPPER)
                .mode(GO)
                .build());

        return this;
    }



    public List<TemplateGenerateTaskValue> getList() {
        return this.list;
    }
}
